package basica.academico;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import basica.administrativo.Funcionario;
import basica.administrativo.Pessoa;

@Entity
@Table(name = "TBCURSO")
public class Curso {

	@Id
	@Column(name = "CodCurso")
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer codigo;

	@Column(name = "NomeCurso", length = 50, nullable = false)
	private String nome;

	@JoinColumn(name = "CoordenadorCurso", insertable=true, updatable=true)
	@ManyToOne(fetch = FetchType.EAGER)
	private Pessoa coordenador;

	@Column(name = "SiglaCurso", length = 3, nullable = false)
	private String sigla;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "CodGrade", insertable = true, updatable = true)
	private Grade gradeCurso;

	public Curso() {
		super();
		this.coordenador = new Funcionario();
	}

	public Curso(Integer codigo, String nome, Pessoa coordenador, String sigla) {
		super();
		this.codigo = codigo;
		this.nome = nome;
		this.coordenador = coordenador;
		this.sigla = sigla;
	}

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Pessoa getCoordenador() {
		return coordenador;
	}

	public void setCoordenador(Pessoa coordenador) {
		this.coordenador = coordenador;
	}

	public String getSigla() {
		return sigla;
	}

	public void setSigla(String sigla) {
		this.sigla = sigla;
	}

	@Override
	public String toString() {
		return "Curso [codigo=" + codigo + ", nome=" + nome
				+ ", coordenador=" + coordenador + ", sigla=" + sigla
				+ "]";
	}
}